import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;


public class Boss extends GameObject {
	
//	public Image image;
	public int x = 200, y;
	public int moveToX = 200, moveToY;
	
	public int count;	//전체 이미지에 포함된 단위 이미지 갯수
	public int width;	//단위 이미지의 넓이
	public int height;	//단위 이미지의 높이
	
	private int currentIndex = 0;//현재 표시할 단위 이미지 위치
	
	private long prevChangedTime = 0;
	private long changeSpeed = 120;//폭발 변환 시간
	
	Rectangle rect;


	public boolean active;// 활성화 여부
	
	public int hitPoint = 300;
	public long prevBulletTime;
	
	public boolean isHitMissile = false;
	
	public float vx[] ;
	public float vy[] ;// 원형탄의 속도 벡터
	
	// 탄환과 탄환 사이의 각도를 계산하
	float rad_step ;
	float rad ;
	

	public Boss(Image image, int x, int y, int count) {
		this.image = image;
		this.x = x;
		this.y = y;
		
		this.count = count;//이미지 나눌 갯
		width = image.getWidth(null)/count;//가로로 긴 이미지를 count로 나눠서 하나의 이미지로 보이게 
		height = image.getHeight(null);
		rect = new Rectangle(image.getWidth(null) - 40, image.getHeight(null) - 40);
		moveBoss();
		

	}
	public void initCircleBullet(int n, float speed, boolean odd) {
		vx = new float[n];
		vy = new float[n];

		rad_step = (float) Math.PI * 2 / n;
		rad =odd?rad_step/2:0;
		for (int i = 0; i < n; i++ ) {
			vx[i] = (float) (Math.cos(rad) * speed);
			vy[i] = (float) (Math.sin(rad) * speed);
			rad += rad_step;
		}
	}
	
	//왕이 움직이는 동작(랜덤으로 움직임)

	public void moveBoss(){
		
		if (moveToX == x && moveToY == y){
			moveToX = (int)((Math.random()*(800-image.getWidth(null)/4)));
			if(moveToX % 2 == 1) moveToX = moveToX - 1;
			if(moveToX < 200 ) moveToX = moveToX + 200;
			moveToY = (int)((Math.random()*(575-image.getHeight(null))));
			if(moveToY % 2 == 1) moveToY = moveToY - 1;
			}
//		moveToX = (int)((Math.random()*(800-image.getWidth(null))));
//		moveToY = (int)((Math.random()*(575-image.getHeight(null))));
		
	}

 	public void update() {
		if (isHitMissile) {
			long currentTime = System.currentTimeMillis();
			if (currentTime - prevChangedTime > changeSpeed) {
				currentIndex++;
				if (currentIndex == 4) {
					currentIndex = 0;
					isHitMissile = false;
				}
				prevChangedTime = currentTime;
				
			}
		}
		
	
		
		if( moveToX > x){
			x = x + 2;
		}
		if(moveToY > y){
			y = y + 2;
		}
		if( moveToX < x){
			x = x - 2;
		}
		if(moveToY < y){
			y = y -2;
		}	
		
		if(active == false){
			x = 1000;
			y = 200;
		}
		
	}

	
	public void render(Graphics g) {
		
		
		
		if (active) {
			g.drawImage(image, (int) x, 		// 표시할 화면의 좌상단 x좌표
					(int) y, 					// 표시할 화면의 좌상단 y좌표
					(int) x + width, 			// 표시할 화면의 우하단 x좌표
					(int) y + height,			// 표시할 화면의 우하단 y좌표
					width * currentIndex, 		// 원본 이미지에서 잘라낼 영역의 좌상단 x
					0, 							// 원본 이미지에서 잘라낼 영역의 좌상단 y
					width * (currentIndex + 1), // 원본 이미지에서 잘라낼 영역의 우하단 x
					height, 					// 원본 이미지에서 잘라낼 영역의 우하단 y
					null); 						// 원본 이미지에서 잘라내서 화면에 표시한다
		}

	}

	public Rectangle getArea() {
		rect.x = x +20;
		rect.y = y +20;
		return rect;	
	}

}
